bd7a6fd551188d186912a1d6e98b055009a1375d,ob1k-concurrent/src/main/java/com/outbrain/ob1k/concurrent/combiners/Combiner.java,Combiner,combine,#ComposableFuture#ComposableFuture#ComposableFuture#TriFunction#,274

Before Change


    elements.put(secondKey, upliftSecond);
    elements.put(thirdKey, upliftThird);

    return all(true, elements).continueOnSuccess(new SuccessHandler<Map<String, TriContainer<T1, T2, T3>>, R>() {
      @Override
      public R handle(final Map<String, TriContainer<T1, T2, T3>> result) throws ExecutionException {
        final TriContainer<T1, T2, T3> firstContainer = result.get(firstKey);
        final TriContainer<T1, T2, T3> secondContainer = result.get(secondKey);
        final TriContainer<T1, T2, T3> thirdContainer = result.get(thirdKey);

        return combiner.apply(firstContainer.first, secondContainer.second, thirdContainer.third);
      }
    });

  }

After Change


    elements.put(secondKey, upliftSecond);
    elements.put(thirdKey, upliftThird);

    return all(true, elements).map(result -> {
      final TriContainer<T1, T2, T3> firstContainer = result.get(firstKey);
      final TriContainer<T1, T2, T3> secondContainer = result.get(secondKey);
      final TriContainer<T1, T2, T3> thirdContainer = result.get(thirdKey);

      try {
        return combiner.apply(firstContainer.first, secondContainer.second, thirdContainer.third);
      } catch (final ExecutionException e) {
        throw new UncheckedExecutionException(e.getCause());
      }
    });

  }